package top.huhuiyu.p4;

/**
 * @author 胡辉煜
 */
public class ExceptionStudy {

  public static void one() {
    RandUtil util = new RandUtil();

    System.out.println(util.rand(1, 10));
    System.out.println(util.rand(10, 1));
    System.out.println(util.rand(2, 12));
  }

  public static double two(double a, double b) {
    // + - * / 加减乘除
    return a / b;
  }

  public static int three(int a, int b) {
    return a / b;
  }

  public static void four() {
    System.out.println("开始执行");
    RandUtil util = new RandUtil();

    // 异常的处理（挽救异常）
    // try{ 有可能发生异常的代码 }
    // catch(异常类型 变量名){ 异常发生时，执行的代码 }
    // Exception是所有异常的老大，Exception的message属性是异常的描述信息
    // printStackTrace是在控制台输出整个异常的执行链
    // 异常体系是让你的程序更加的健壮和可控，正常情况下不应该出现异常打断程序
    // 如果有异常发生的可能，那么最好的处理不是try来尝试稳住运行，而是throws抛出
    // 因为挽救异常可能会让程序没有按照预期的执行，并无法得到正常的结果
    try {
      System.out.println(util.rand(1, 10));
      System.out.println(util.rand(10, 1));
      System.out.println(util.rand(2, 12));
    } catch (Exception ex) {
      System.out.println(ex.getMessage());
      ex.printStackTrace();
    }

    System.out.println("结束执行");
  }


  public static void main(String[] args) {
    // static的成员/方法是隶属于类，不需要实例化就能调用
    // ExceptionStudy.one();

    // java里面小数的除法的返回值是小数，而java的小数是浮动结果，并不准确
    // 而整数的除法只能返回整数结果！！！！
    // 小数的被0除会返回一个特别的值，叫无限大
    // 而整数的被0除会发生异常!!!!
    // 运算符的任何一侧是小数，那么运算结果就是小数

//    System.out.println(ExceptionStudy.two(6, 2));
//    System.out.println(ExceptionStudy.two(1, 2));
//    System.out.println(ExceptionStudy.two(1, 0));
//
//    System.out.println(ExceptionStudy.three(6, 2));
//    System.out.println(ExceptionStudy.three(1, 2));
//    System.out.println(ExceptionStudy.three(1, 0));
//
//    System.out.println(1.0 / 2);

    ExceptionStudy.four();

  }

}
